package com.up.cloudfeiyibackend.result;

import com.up.cloudfeiyibackend.constant.HttpStatusConstant;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * 统一返回结果
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result<T> implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 业务状态码
     */
    private Integer code;

    /**
     * 业务提示信息
     */
    private String message;

    /**
     * 业务返回数据
     */
    private T data;

    /**
     * 响应成功
     *
     * @param message 提示信息
     * @return
     * @param <T> 数据类型
     */
    public static <T> Result<T> success(String message){
        return new Result<>(HttpStatusConstant.SUCCESS, message,null);
    }

    /**
     * 响应成功
     *
     * @param data  响应数据
     * @return
     * @param <T> 数据类型
     */
    public static <T> Result<T> success(T data){
        return new Result<>(HttpStatusConstant.SUCCESS, "success",data);
    }

    /**
     * 响应成功
     *
     * @param message 提示信息
     * @param data  响应数据
     * @return
     * @param <T>  数据类型
     */
    public static <T> Result<T> success(String message, T data){
        return new Result<>(HttpStatusConstant.SUCCESS, message,data);
    }

    /**
     * 响应失败
     *
     * @param message 提示信息
     * @return
     * @param <T> 数据类型
     */
    public static <T> Result<T> error(String message){
        return new Result<>(HttpStatusConstant.ERROR, message,null);
    }
}
